package com.sdcqjy.property.wxapi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;

import com.sdcqjy.mylibrary.Logger;
import com.sdcqjy.mylibrary.widget.ShowToast;
import com.sdcqjy.property.MyConstants;
import com.sdcqjy.property.activity.LoginActivity;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;


/**
 * 微信客户端回调activity<br>
 * 微信使用包libammsdk.jar <br>
 * 不做修改，由微信回调
 */
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    // IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = WXAPIFactory.createWXAPI(this, WChatConstants.APP_ID, false);
        api.handleIntent(getIntent(), this);
    }

    // 微信发送请求到第三方应用时，会回调到该方法
    public void onReq(BaseReq req) {
        // switch (req.getType()) {
        // case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
        // ShowToast.alertShortOfWhite(this, "11111111111");
        // break;
        // case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
        // ShowToast.alertShortOfWhite(this, "222222222222");
        // break;
        // default:
        // break;
        // }
    }

    //请求openid
//    appid	是	应用唯一标识，在微信开放平台提交应用审核通过后获得
//    secret	是	应用密钥AppSecret，在微信开放平台提交应用审核通过后获得
//    code	是	填写第一步获取的code参数
//    grant_type	是	填authorization_code
//    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    public void onResp(BaseResp resp) {
        if (resp instanceof SendAuth.Resp) {//这是微信登录相应
            SendAuth.Resp loginResp = (SendAuth.Resp) resp;
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    Logger.out("用户登录");
                    String code = loginResp.code;
                    Intent intent = new Intent(MyConstants.ActionOtherLogin);
                    intent.putExtra("code", code);
                    intent.putExtra("loginType", LoginActivity.WChatLogin);
                    LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent);
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    ShowToast.alertShortOfWhite(this, "用户拒绝");
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    ShowToast.alertShortOfWhite(this, "用户取消");
                    break;
            }
        } else {
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    // 分享成功
                    ShowToast.alertShortOfWhite(this, "分享成功");
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    // 分享取消
                    ShowToast.alertShortOfWhite(this, "分享取消");
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    // 分享拒绝
                    ShowToast.alertShortOfWhite(this, "分享拒绝");
                    break;
            }
        }
        finish();
    }
}
